package com.logos.musicframe.adapter;

import com.logos.musicframe.entity.FileInfo;

import java.io.InputStream;
import java.util.List;

/**
 * @author logos
 * date 2025/6/04 21:25
 * @version v1.0
 * @Package com.logos.musicframe.adapter
 */

public interface StorageAdapter {


    /**
     * 创建bucket桶
     */
    void createBucket(String bucketName);

    /**
     * 上传文件
     */
    String uploadFile(byte[] fileBytes, String bucket, String objectName, String originalFilename);

    /**
     * 列出所有桶
     */
    List<String> getAllBucket();

    /**
     * 列出当前桶及文件
     */
    List<FileInfo> getAllFile(String bucket);

    /**
     * 下载文件
     */
    InputStream downLoad(String bucket, String objectName);

    /**
     * 删除桶
     */
    void deleteBucket(String bucket);

    /**
     * 删除文件
     */
    void deleteObject(String bucket, String objectName);

    /**
     * 获取文件url
     */
    String getPreviewFileUrl(String bucketName, String objectName);

    String getUrl(String bucket,String objectName);
}
